#ifndef CONEXIONESRAID_H_
#define CONEXIONESRAID_H_

#include "../RAID.h"
#include "operacionesRaid.h"
#include "informacionDiscos.h"

extern uint32_t first;
extern int max;

#endif /* CONEXIONESRAID_H_ */

typedef struct{
	char flag;
	t_socket_server *server;
}t_conexion;

t_stream *analizarHandshakePFS(char *mensaje, t_socket_client *client);
t_stream *analizarHandshakePPD(char *mensaje);
void iniciarConexionConDispositivos();
void *onAcceptClosure(t_socket_server *server);
void analizarMensajePFS(char* mensaje, t_socket_client *client);
void analizarMensajePPD(char* mensaje, t_socket_client *client);
int inicializarPollConexionesConPFS();
void *iniciarSocketServerPFS(t_socket_server *server);
void socket_conectarPPD(t_socket_server *socketServer);
void socket_conectarPFS(t_socket_server *socketServer);
int socket_enviarPeticionPPD(t_socket_client *socketClient, char* data);
void validarCaidaDisco(t_socket_server *server);
void inicializarClientePPD();
void *disposeConexion(t_conexion *conexion);
t_socket_server *socket_crearSocketParaPFS();
t_socket_server *socket_crearSocketParaPPD();
unsigned char isPFS(t_socket_server *server);
int enviarMensaje(t_socket_client *client, char*msj);
t_peticion* respuestaHandshakePFS();
t_peticion* respuestaHandshakePDD(int error);
void validarFinSincro(t_infoDisco* disco, time_t tiempoInicio);





void socket_aceptarHandshake();

void socket_responderHandshake();

void socket_rechazarHandshake();
